package synchronize.synchronize005;

/**
 * synchronized的重入
 */
public class SyncDubbo1 {

    /**
     * 调用方法2
     */
    public synchronized void method1() {
        System.out.println("method1..");
        method2();
    }

    /**
     * 调用方法3
     */
    public synchronized void method2() {
        System.out.println("method2..");
        method3();
    }

    /**
     * 打印方法3
     */
    public synchronized void method3() {
        System.out.println("method3..");
    }

    /**
     * 创建一个线程，调用方法1，方法1调用了方法2，方法2调用了方法3,3个方法都是synchronized
     *
     * @param args
     */
    public static void main(String[] args) {
        final SyncDubbo1 sd = new SyncDubbo1();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                sd.method1();
            }
        });
        t1.start();
    }
}
